home *** CD-ROM | disk | FTP | other *** search
/ Visual Basic Source Code / Visual Basic Source Code.iso / vbsource / getrea1a / form1.frm next >
Text File  |  1999-07-07  |  6KB  |  194 lines

  1. VERSION 5.00
  2. Begin VB.Form Form1 
  3.    BorderStyle     =   1  'Fixed Single
  4.    Caption         =   "Size Check"
  5.    ClientHeight    =   5088
  6.    ClientLeft      =   36
  7.    ClientTop       =   324
  8.    ClientWidth     =   4188
  9.    LinkTopic       =   "Form1"
  10.    MaxButton       =   0   'False
  11.    ScaleHeight     =   5088
  12.    ScaleWidth      =   4188
  13.    StartUpPosition =   3  'Windows Default
  14.    Begin VB.ComboBox cboFileSistem 
  15.       Height          =   288
  16.       ItemData        =   "Form1.frx":0000
  17.       Left            =   120
  18.       List            =   "Form1.frx":000A
  19.       Style           =   2  'Dropdown List
  20.       TabIndex        =   6
  21.       Top             =   3480
  22.       Width           =   3972
  23.    End
  24.    Begin VB.Frame Frame1 
  25.       Height          =   3252
  26.       Left            =   120
  27.       TabIndex        =   0
  28.       Top             =   120
  29.       Width           =   3972
  30.       Begin VB.CommandButton cmdCheckFile 
  31.          Caption         =   "Check File Size"
  32.          Height          =   372
  33.          Left            =   1920
  34.          TabIndex        =   5
  35.          Top             =   2760
  36.          Width           =   1932
  37.       End
  38.       Begin VB.CommandButton cmdCheckFolder 
  39.          Caption         =   "Check Folder Size"
  40.          Height          =   372
  41.          Left            =   1920
  42.          TabIndex        =   4
  43.          Top             =   2280
  44.          Width           =   1932
  45.       End
  46.       Begin VB.DirListBox Dir1 
  47.          Height          =   2232
  48.          Left            =   120
  49.          TabIndex        =   3
  50.          Top             =   240
  51.          Width           =   1572
  52.       End
  53.       Begin VB.DriveListBox Drive1 
  54.          Height          =   288
  55.          Left            =   120
  56.          TabIndex        =   2
  57.          Top             =   2640
  58.          Width           =   1572
  59.       End
  60.       Begin VB.FileListBox File1 
  61.          Height          =   1800
  62.          Left            =   1920
  63.          TabIndex        =   1
  64.          Top             =   240
  65.          Width           =   1932
  66.       End
  67.    End
  68.    Begin VB.Label lblResult 
  69.       Alignment       =   2  'Center
  70.       Height          =   972
  71.       Left            =   120
  72.       TabIndex        =   7
  73.       Top             =   3960
  74.       Width           =   3972
  75.    End
  76. End
  77. Attribute VB_Name = "Form1"
  78. Attribute VB_GlobalNameSpace = False
  79. Attribute VB_Creatable = False
  80. Attribute VB_PredeclaredId = True
  81. Attribute VB_Exposed = False
  82. Option Explicit
  83. Dim ClasterSize As Integer
  84. Dim fs As New FileSystemObject
  85. Dim FolderSize
  86. Dim ActFolderSize
  87. Private Sub cboFileSistem_Click()
  88. Select Case cboFileSistem
  89.    Case "FAT16"
  90.     ClasterSize = 16
  91.    Case "FAT32"
  92.     ClasterSize = 4
  93. End Select
  94. End Sub
  95.  
  96. Private Sub cmdCheckFile_Click()
  97. Dim FilePath As String
  98. Dim S As Double
  99. Dim ActSize As Double
  100. If Right(Dir1.Path, 1) <> "\" Then
  101.    FilePath = Dir1.Path & "\" & File1.FileName
  102.   Else
  103.    FilePath = Dir1.Path & File1.FileName
  104. End If
  105. S = GetFileSize(FilePath)
  106. If S <> 0 Then S = S / 1024
  107. ActSize = GetActualFileSize(FilePath)
  108. Call ShowResult(FilePath, S, ActSize, " Kb ")
  109. End Sub
  110.  
  111. Private Sub cmdCheckFolder_Click()
  112. Screen.MousePointer = 11
  113. Form1.Enabled = False
  114. DoFolder Dir1.Path
  115. Call ShowResult(Dir1.Path, FolderSize / 1024, ActFolderSize, " Mb ")
  116. FolderSize = 0
  117. ActFolderSize = 0
  118. Form1.Enabled = True
  119. Screen.MousePointer = 1
  120. End Sub
  121.  
  122. Private Sub Drive1_Change()
  123.    Dir1.Path = Drive1.Drive   ' When drive changes, set directory path.
  124. End Sub
  125. Private Sub Dir1_Change()
  126.    File1.Path = Dir1.Path   ' When directory changes, set file path.
  127. End Sub
  128.  
  129.  
  130.  
  131. Private Sub File1_DblClick()
  132. cmdCheckFile_Click
  133. End Sub
  134.  
  135. Private Sub Form_Load()
  136. cboFileSistem.ListIndex = 0
  137. End Sub
  138. ' This function returns lenght of file in bytes
  139. Public Function GetFileSize(Path As String) As Long
  140. On Error Resume Next
  141. GetFileSize = FileLen(Path)
  142. On Error GoTo 0
  143. End Function
  144. 'This function returns the space that file  file is cathing on drive in Kb
  145. Public Function GetActualFileSize(FilePath As String) As Long
  146. Dim Size
  147. On Error Resume Next
  148. Size = GetFileSize(FilePath)
  149. 'If size=0 exit function
  150. If Size = 0 Then
  151.    GetActualFileSize = 0
  152.    Exit Function
  153. End If
  154. Size = Size / 1024 'Get size in Kb
  155. If Size < ClasterSize Then
  156.    GetActualFileSize = ClasterSize
  157.    Exit Function
  158. End If
  159. If Size / ClasterSize = Size \ ClasterSize Then
  160.    GetActualFileSize = Size
  161.   Else
  162.    GetActualFileSize = (Size \ ClasterSize + 1) * ClasterSize
  163. End If
  164. End Function
  165.  
  166. Public Sub ShowResult(Name As String, Size As Double, ByVal ActualeSize As Double, Units As String)
  167. Dim Message As String
  168. Message = " File Name    : " & Name & vbCrLf & _
  169.           " Size         : " & Format(Size, "#0.00") & Units & vbCrLf & _
  170.           " Actuale Size : " & Format(ActualeSize, "#0.00") & Units
  171. lblResult.Caption = Message
  172. End Sub
  173.  
  174. 'This function puts in FolderSize size of folder in Kb
  175. 'and in ActFolderSize : size on drive in Mb
  176. Public Sub DoFolder(Path As String)
  177. Dim fol As Folder
  178. Dim fi As Folder
  179. Dim fols As Folders
  180. Dim fils As Files
  181. Dim fil As File
  182. Set fol = fs.GetFolder(Path)
  183. Set fils = fol.Files
  184.  For Each fil In fils
  185.    FolderSize = FolderSize + GetFileSize(fil.Path) / 1024
  186.    ActFolderSize = ActFolderSize + GetActualFileSize(fil.Path) / 1024
  187.  Next fil
  188. Set fols = fol.SubFolders
  189. For Each fi In fols
  190. 'Recurcive call for next subfolder
  191.  DoFolder fi.Path
  192. Next fi
  193. End Sub
  194.